// 栈类
function Stack() {
    // 栈中的属性
    this.items = []

    // 栈中相关方法
    // push(element): 添加一个新元素到栈顶位置.

    // pop()：移除栈顶的元素，同时返回被移除的元素。

    // peek()：返回栈顶的元素，不对栈做任何修改（这个方法不会移除栈顶的元素，仅仅返回它）。

    // isEmpty()：如果栈里没有任何元素就返回true，否则返回false。

    // clear()：移除栈里的所有元素。

    // size()：返回栈里的元素个数。这个方法和数组的length属性很类似。

    Stack.prototype.push = function (element) {
        this.items.push(element)
    }

    Stack.prototype.pop = function () {
        return this.items.pop()
    }

    Stack.prototype.peek = function () {
        return this.items[this.items.length - 1]
    }

    Stack.prototype.isEmpty = function () {
        return this.items.length == 0
    }

    Stack.prototype.clear = function () {
        this.items = []
    }

    Stack.prototype.size = function () {
        return this.items.length
    }

    Stack.prototype.toString = function () {
        return this.items.join(" ")
    }

}

// 栈代码测试
var stack = new Stack()
stack.push(1)
stack.push(2)
// console.log(stack.size())
stack.size()
